function Jacobian = calculate_Jacobian(delta_para, DH_para, q)

Alpha = DH_para.Alpha;
A = DH_para.A;
D = DH_para.D;
Theta = DH_para.Theta;

alpha1 = Alpha(1) + delta_para(1); alpha2 = Alpha(2) + delta_para(2); alpha3 = Alpha(3) + delta_para(3); alpha4 = Alpha(4) + delta_para(4); alpha5 = Alpha(5) + delta_para(5); alpha6 = Alpha(6) + delta_para(6);
a1 = A(1) + delta_para(7); a2 = A(2) + delta_para(8); a3 = A(3) + delta_para(9); a4 = A(4) + delta_para(10); a5 = A(5) + delta_para(11); a6 = A(6) + delta_para(12);
d1 = D(1) + delta_para(13); d2 = D(2) + delta_para(14); d3 = D(3) + delta_para(15); d4 = D(4) + delta_para(16); d5 = D(5) + delta_para(17); d6 = D(6) + delta_para(18);
q1 = q(1) + delta_para(19); q2 = q(2) + delta_para(20); q3 = q(3) + delta_para(21); q4 = q(4) + delta_para(22); q5 = q(5) + delta_para(23); q6 = q(6) + delta_para(24);


Jacobian = [                                                                                                                                                                                                                                                                                                                                                                                                                                                      0,  sin(q1)*(a4*cos(q2 + q3) - (d6*cos(q2 + q3 + q4 + q5))/2 + a3*cos(q2) + (d6*cos(q2 + q3 + q4 - q5))/2 + d5*cos(q2 + q3 + q4)), d6*cos(q3)*cos(q4)*sin(q1)*sin(q5) - a4*sin(q1)*sin(q3) - d6*cos(q1)*cos(q2)*cos(q5) - d5*cos(q3)*sin(q1)*sin(q4) - d5*cos(q4)*sin(q1)*sin(q3) - d4*cos(q1)*cos(q2) - d6*sin(q1)*sin(q3)*sin(q4)*sin(q5), d4*cos(q1)*sin(q2)*sin(q3) - d4*cos(q1)*cos(q2)*cos(q3) - d5*sin(q1)*sin(q4) + d6*cos(q4)*sin(q1)*sin(q5) - d6*cos(q1)*cos(q2)*cos(q3)*cos(q5) + d6*cos(q1)*cos(q5)*sin(q2)*sin(q3), d5*sin(q1) - d6*cos(q1)*cos(q5)*sin(q2)*sin(q3)*sin(q4) + d6*cos(q1)*cos(q2)*cos(q3)*cos(q5)*sin(q4) + d6*cos(q1)*cos(q2)*cos(q4)*cos(q5)*sin(q3) + d6*cos(q1)*cos(q3)*cos(q4)*cos(q5)*sin(q2),  (d6*(sin(q1 + q2 + q3 + q4) + sin(q2 - q1 + q3 + q4)))/2, 1, cos(q1), cos(q1)*sin(q2), sin(q2 + q3)*cos(q1), cos(q1 + q2 + q3 + q4)/2 + cos(q2 - q1 + q3 + q4)/2, cos(q1)*cos(q2)*cos(q3)*cos(q4)*cos(q5) - sin(q1)*sin(q5) - cos(q1)*cos(q2)*cos(q5)*sin(q3)*sin(q4) - cos(q1)*cos(q3)*cos(q5)*sin(q2)*sin(q4) - cos(q1)*cos(q4)*cos(q5)*sin(q2)*sin(q3), 0, -sin(q1), -sin(q1), -sin(q1), sin(q1 + q2 + q3 + q4)/2 + sin(q2 - q1 + q3 + q4)/2, cos(q1)*cos(q2)*sin(q3)*sin(q4)*sin(q5) - cos(q1)*cos(q2)*cos(q3)*cos(q4)*sin(q5) - cos(q5)*sin(q1) + cos(q1)*cos(q3)*sin(q2)*sin(q4)*sin(q5) + cos(q1)*cos(q4)*sin(q2)*sin(q3)*sin(q5), d5*sin(q1)*sin(q2)*sin(q3)*sin(q4) - d6*cos(q1)*cos(q5) - a3*sin(q1)*sin(q2) - a4*cos(q2)*sin(q1)*sin(q3) - a4*cos(q3)*sin(q1)*sin(q2) - d5*cos(q2)*cos(q3)*sin(q1)*sin(q4) - d5*cos(q2)*cos(q4)*sin(q1)*sin(q3) - d5*cos(q3)*cos(q4)*sin(q1)*sin(q2) - d4*cos(q1) + d6*cos(q2)*cos(q3)*cos(q4)*sin(q1)*sin(q5) - d6*cos(q2)*sin(q1)*sin(q3)*sin(q4)*sin(q5) - d6*cos(q3)*sin(q1)*sin(q2)*sin(q4)*sin(q5) - d6*cos(q4)*sin(q1)*sin(q2)*sin(q3)*sin(q5), cos(q1)*(a4*cos(q2 + q3) - (d6*cos(q2 + q3 + q4 + q5))/2 + a3*cos(q2) + (d6*cos(q2 + q3 + q4 - q5))/2 + d5*cos(q2 + q3 + q4)), cos(q1)*(a4*cos(q2 + q3) - (d6*cos(q2 + q3 + q4 + q5))/2 + (d6*cos(q2 + q3 + q4 - q5))/2 + d5*cos(q2 + q3 + q4)), cos(q1)*((d6*cos(q2 + q3 + q4 - q5))/2 - (d6*cos(q2 + q3 + q4 + q5))/2 + d5*cos(q2 + q3 + q4)), d6*sin(q1)*sin(q5) + d6*cos(q1)*cos(q2)*cos(q5)*sin(q3)*sin(q4) + d6*cos(q1)*cos(q3)*cos(q5)*sin(q2)*sin(q4) + d6*cos(q1)*cos(q4)*cos(q5)*sin(q2)*sin(q3) - d6*cos(q1)*cos(q2)*cos(q3)*cos(q4)*cos(q5), 0;
                                                                                                                                                                                                                                                                                                                                (d6*cos(q2 + q3 + q4 + q5))/2 - d1 - a4*cos(q2 + q3) - a3*cos(q2) - (d6*cos(q2 + q3 + q4 - q5))/2 - d5*cos(q2 + q3 + q4), -cos(q1)*(a4*cos(q2 + q3) - (d6*cos(q2 + q3 + q4 + q5))/2 + a3*cos(q2) + (d6*cos(q2 + q3 + q4 - q5))/2 + d5*cos(q2 + q3 + q4)), a4*cos(q1)*sin(q3) - d4*cos(q2)*sin(q1) + d5*cos(q1)*cos(q3)*sin(q4) + d5*cos(q1)*cos(q4)*sin(q3) - d6*cos(q2)*cos(q5)*sin(q1) - d6*cos(q1)*cos(q3)*cos(q4)*sin(q5) + d6*cos(q1)*sin(q3)*sin(q4)*sin(q5), d5*cos(q1)*sin(q4) - d4*cos(q2)*cos(q3)*sin(q1) - d6*cos(q1)*cos(q4)*sin(q5) + d4*sin(q1)*sin(q2)*sin(q3) - d6*cos(q2)*cos(q3)*cos(q5)*sin(q1) + d6*cos(q5)*sin(q1)*sin(q2)*sin(q3), d6*cos(q2)*cos(q3)*cos(q5)*sin(q1)*sin(q4) - d5*cos(q1) + d6*cos(q2)*cos(q4)*cos(q5)*sin(q1)*sin(q3) + d6*cos(q3)*cos(q4)*cos(q5)*sin(q1)*sin(q2) - d6*cos(q5)*sin(q1)*sin(q2)*sin(q3)*sin(q4), -(d6*(cos(q1 + q2 + q3 + q4) - cos(q2 - q1 + q3 + q4)))/2, 0, sin(q1), sin(q1)*sin(q2), sin(q2 + q3)*sin(q1), sin(q1 + q2 + q3 + q4)/2 - sin(q2 - q1 + q3 + q4)/2, cos(q1)*sin(q5) + cos(q2)*cos(q3)*cos(q4)*cos(q5)*sin(q1) - cos(q2)*cos(q5)*sin(q1)*sin(q3)*sin(q4) - cos(q3)*cos(q5)*sin(q1)*sin(q2)*sin(q4) - cos(q4)*cos(q5)*sin(q1)*sin(q2)*sin(q3), 0,  cos(q1),  cos(q1),  cos(q1), cos(q2 - q1 + q3 + q4)/2 - cos(q1 + q2 + q3 + q4)/2, cos(q1)*cos(q5) - cos(q2)*cos(q3)*cos(q4)*sin(q1)*sin(q5) + cos(q2)*sin(q1)*sin(q3)*sin(q4)*sin(q5) + cos(q3)*sin(q1)*sin(q2)*sin(q4)*sin(q5) + cos(q4)*sin(q1)*sin(q2)*sin(q3)*sin(q5), a3*cos(q1)*sin(q2) - d4*sin(q1) - d6*cos(q5)*sin(q1) + a4*cos(q1)*cos(q2)*sin(q3) + a4*cos(q1)*cos(q3)*sin(q2) + d5*cos(q1)*cos(q2)*cos(q3)*sin(q4) + d5*cos(q1)*cos(q2)*cos(q4)*sin(q3) + d5*cos(q1)*cos(q3)*cos(q4)*sin(q2) - d5*cos(q1)*sin(q2)*sin(q3)*sin(q4) + d6*cos(q1)*cos(q2)*sin(q3)*sin(q4)*sin(q5) + d6*cos(q1)*cos(q3)*sin(q2)*sin(q4)*sin(q5) + d6*cos(q1)*cos(q4)*sin(q2)*sin(q3)*sin(q5) - d6*cos(q1)*cos(q2)*cos(q3)*cos(q4)*sin(q5), sin(q1)*(a4*cos(q2 + q3) - (d6*cos(q2 + q3 + q4 + q5))/2 + a3*cos(q2) + (d6*cos(q2 + q3 + q4 - q5))/2 + d5*cos(q2 + q3 + q4)), sin(q1)*(a4*cos(q2 + q3) - (d6*cos(q2 + q3 + q4 + q5))/2 + (d6*cos(q2 + q3 + q4 - q5))/2 + d5*cos(q2 + q3 + q4)), sin(q1)*((d6*cos(q2 + q3 + q4 - q5))/2 - (d6*cos(q2 + q3 + q4 + q5))/2 + d5*cos(q2 + q3 + q4)), d6*cos(q2)*cos(q5)*sin(q1)*sin(q3)*sin(q4) - d6*cos(q1)*sin(q5) + d6*cos(q3)*cos(q5)*sin(q1)*sin(q2)*sin(q4) + d6*cos(q4)*cos(q5)*sin(q1)*sin(q2)*sin(q3) - d6*cos(q2)*cos(q3)*cos(q4)*cos(q5)*sin(q1), 0;
  d4*cos(q1) + d6*cos(q1)*cos(q5) + a3*sin(q1)*sin(q2) + a4*cos(q2)*sin(q1)*sin(q3) + a4*cos(q3)*sin(q1)*sin(q2) + d5*cos(q2)*cos(q3)*sin(q1)*sin(q4) + d5*cos(q2)*cos(q4)*sin(q1)*sin(q3) + d5*cos(q3)*cos(q4)*sin(q1)*sin(q2) - d5*sin(q1)*sin(q2)*sin(q3)*sin(q4) - d6*cos(q2)*cos(q3)*cos(q4)*sin(q1)*sin(q5) + d6*cos(q2)*sin(q1)*sin(q3)*sin(q4)*sin(q5) + d6*cos(q3)*sin(q1)*sin(q2)*sin(q4)*sin(q5) + d6*cos(q4)*sin(q1)*sin(q2)*sin(q3)*sin(q5),                                                                                                                d4 + d6*cos(q5),                                                                                                                                                                                sin(q2)*(d4 + d6*cos(q5)),                                                                                                               (d6*sin(q2 + q3 - q5))/2 + d4*sin(q2 + q3) + (d6*sin(q2 + q3 + q5))/2,                                                                                                                                       (d6*(cos(q2 + q3 + q4 + q5) + cos(q2 + q3 + q4 - q5)))/2,                                      d6*cos(q2 + q3 + q4), 0,       0,         cos(q2),         cos(q2 + q3),                                  -sin(q2 + q3 + q4),                                                                                                                                   - sin(q2 + q3 + q4 + q5)/2 - sin(q2 + q3 + q4 - q5)/2, 1,        0,        0,        0,                                   cos(q2 + q3 + q4),                                                                                                                                     cos(q2 + q3 + q4 - q5)/2 - cos(q2 + q3 + q4 + q5)/2,                                                                                                                                                                                                                                                                                                                                                                                                                                                      0,           (d6*sin(q2 + q3 + q4 + q5))/2 - a4*sin(q2 + q3) - a3*sin(q2) - (d6*sin(q2 + q3 + q4 - q5))/2 - d5*sin(q2 + q3 + q4),           (d6*sin(q2 + q3 + q4 + q5))/2 - a4*sin(q2 + q3) - (d6*sin(q2 + q3 + q4 - q5))/2 - d5*sin(q2 + q3 + q4),           (d6*sin(q2 + q3 + q4 + q5))/2 - (d6*sin(q2 + q3 + q4 - q5))/2 - d5*sin(q2 + q3 + q4),                                                                                                                                               (d6*(sin(q2 + q3 + q4 + q5) + sin(q2 + q3 + q4 - q5)))/2, 0];